package response

// 响应状态码定义
const (
	// Success 成功响应状态码
	Success int = 0

	// IllegalReq 请求参数非法
	IllegalReq int = 1001

	// InternalServerError 服务器内部异常
	InternalServerError int = 1002

	// BusinessError 业务自定义异常
	BusinessError int = 2001
)

// 响应提示信息定义
const (
	// SuccessMessage 成功响应提示信息
	SuccessMessage string = "OK"

	// IllegalReqMessage 请求参数非法响应提示信息
	IllegalReqMessage string = "请求参数非法"

	// InternalServerErrorMessage 服务器内部异常响应提示信息
	InternalServerErrorMessage string = "服务器内部异常"
)

// RestResp 通用Rest响应
type RestResp struct {
	Code    int    `json:"code"`    //响应状态码
	Message string `json:"message"` //响应提示信息
	Data    any    `json:"data"`    //响应数据
}

// NewSuccessResp 成功响应
func NewSuccessResp(data any) *RestResp {
	return &RestResp{
		Code:    Success,
		Message: "OK",
		Data:    data,
	}
}

// NewBusinessErrorResp 创建业务处理异常响应
func NewBusinessErrorResp(message string) *RestResp {
	return &RestResp{
		Code:    BusinessError,
		Message: message,
		Data:    nil,
	}
}

// NewRestResp 创建通用响应
func NewRestResp(code int, message string, data any) *RestResp {
	return &RestResp{
		Code:    code,
		Message: message,
		Data:    data,
	}
}
